iex 에서 Ash Simple Debug (ets사용)

my_debug.ex

:ets.new(:debug_values, [:named_table, :set, :public])

if Mix.env() in [:dev, :test] do
  defmodule DeopjibUtils.Debug do
    def dbg_store(expression, name \\ :last_value, opts \\ []) do
      result = expression

      if(opts[:print]) do
        dbg(expression)
      end

      :persistent_term.put({__MODULE__, name}, result)

      result
    end

    def dbg_vget(name \\ :last_value) do
      :persistent_term.get({__MODULE__, name}, nil)
    end
  end
else
  defmodule MyDebug do
    # 프로덕션용 더미 함수
    def dbg_store(expression, _name \\ nil, _opts \\ []), do: expression
    def dbg_vget(_name \\ nil), do: nil
  end
end

.iex.exs

import MyDebug, only: [dbg_vget: 0, dbg_vget: 1, dbg_store: 1, dbg_store: 2, dbg_store: 3]

사용시

  1. debug 값 저장 및 debug 출력
def mount(assigns) do
  # ...
	assigns 
	|> MyDebug.dbg_store()
end
  1. iex 내에서 값 출력
iex(1)> dbg_vget()